# 1. 使用官方 PHP 镜像，带 FPM
FROM php:8.2-fpm-alpine

# 容器默认时区为UTC，如需使用上海时间请启用以下时区设置命令
RUN apk add tzdata && cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && echo Asia/Shanghai > /etc/timezone

# 2. 安装系统依赖和 PHP 扩展（最小依赖方案，Alpine 3.19+，php82-* 包名）
RUN sed -i 's/dl-cdn.alpinelinux.org/mirrors.tencent.com/g' /etc/apk/repositories \
    && apk add --no-cache \
    php82 \
    php82-fpm \
    php82-pdo \
    php82-pdo_mysql \
    php82-json \
    php82-ctype \
    php82-curl \
    php82-mbstring \
    php82-xml \
    php82-fileinfo \
    #php82-exif \
    php82-openssl \
    php82-zip \
    php82-pecl-redis \
    #php82-bcmath \
    nginx \
    supervisor \
    curl \
    && rm -rf /var/cache/apk/*

# 3. 安装 Composer（可选，实际已不需要 composer install，可保留用于调试）
# COPY --from=composer:2.5 /usr/bin/composer /usr/bin/composer

# 4. 安装 Node.js（如有前端构建需求）
#RUN curl -fsSL https://deb.nodesource.com/setup_18.x | bash - \
#    && apt-get install -y nodejs

# 5. 设置工作目录
WORKDIR /var/www

# 6. 复制项目文件（包括 vendor 目录）
COPY . /var/www

# 7. 移除 composer install 步骤
# RUN composer install --no-interaction --prefer-dist --optimize-autoloader

# 8. 安装前端依赖并构建（如有前端）
#RUN if [ -f package.json ]; then npm install && npm run build; fi

# 9. 权限设置，确保 storage 目录可写给 nobody 用户
RUN chown -R nobody:nobody /var/www/storage \
    && chmod -R 777 /var/www/storage

# 10. 复制 Nginx 配置
COPY ./docker/nginx.conf /etc/nginx/nginx.conf

# 11. Supervisor 配置（可选，通常用于同时运行 php-fpm 和 nginx，但如果你只需要接口请求（API），可以只运行 php-fpm，无需配置 Supervisor）
COPY ./docker/supervisord.conf /etc/supervisord.conf

# 12. 暴露端口
EXPOSE 80

# 13. 启动 Supervisor
CMD ["/usr/bin/supervisord", "-c", "/etc/supervisord.conf"]
